home *** CD-ROM | disk | FTP | other *** search
/ Power CD / Power CD ATARI-Rechner Lieben.iso / UTILITY / TORAM / TORAM.C next >
Encoding:
C/C++ Source or Header  |  1993-10-09  |  2.8 KB  |  131 lines

  1. /* Programm kopiert aus der Datei TORAM.SYS  */
  2. /* Dateien auf eine RAM-Disk                 */
  3. /* 27.08.1986 by Bernhard Baier              */
  4.  
  5. #include <osbind.h>
  6. #define Maxlength 120000L
  7.  
  8. unsigned int dtaddress[25];
  9. char data[2000];
  10. long buffer;
  11. int err;
  12. int errflag = 0;
  13.  
  14. long eval_length(datei)
  15. char *datei;
  16. {
  17.        long length;
  18.  
  19.        Fsetdta(dtaddress);
  20.        err = Fsfirst(datei, 0);        
  21.        length = ((long) dtaddress[13] << 16) + dtaddress[14];
  22.        if (err)
  23.         {
  24.           Cconws(datei);
  25.           Cconws(" nicht gefunden!\15\12");
  26.           errflag = 1;
  27.           return (0x0L);
  28.         }
  29.        return (length);
  30. }
  31.  
  32. copy(datei)
  33. char *datei;
  34. {
  35.        long file_length;
  36.        int handle;
  37.  
  38.        if ((file_length = eval_length(datei)) != 0x0L)
  39.         {
  40.  
  41.           Cconws(datei);
  42.           Cconws(" wird kopiert\15\12");
  43.  
  44.           handle = Fopen(datei, 2);
  45.           Fread(handle, file_length, buffer);
  46.           Fclose(handle);
  47.           datei[0] = data[0];
  48.           handle = Fcreate(datei, 0);                 
  49.  
  50.           if (handle > 0)
  51.            {
  52.              Fwrite(handle, file_length, buffer);
  53.              Fclose(handle);
  54.            }           
  55.           else
  56.            {
  57.              Cconws("Schreibfehler!\15\12");
  58.              errflag = 1;
  59.            }
  60.  
  61.         }
  62. }
  63.  
  64. int isname(i)
  65. int i;
  66. {
  67.        if (data[i] > 32 && data[i] < 127)
  68.           return (1);
  69.        return (0);
  70. }
  71.  
  72. main()
  73. {
  74.        int i, handle;
  75.        int p, flag;
  76.        long length;
  77.        
  78.        Cconws("\33E\TORAM.PRG by Bernhard Baier\15\12\15\12");
  79.        if ((length = eval_length("TORAM.SYS")) == 0x0L)
  80.         {
  81.           Cnecin();
  82.           exit(1);
  83.         }
  84.        if ((buffer = Malloc(Maxlength)) == 0x0L)
  85.         {
  86.           Cconws("\15\12Fehler! Nicht genĂ¼gend Speicher!");
  87.           Cnecin();
  88.           exit(1);
  89.         }
  90.  
  91.        if (length > 2000)
  92.         {
  93.           Cconws("\15\12Fehler! Datei TORAM.SYS zu lang!");
  94.           Cnecin();
  95.           exit(1);
  96.         }
  97.        handle = Fopen("TORAM.SYS", 2);
  98.        Fread(handle, length, data);
  99.        Fclose(handle);
  100.  
  101.        Cconws("Kopieren auf Laufwerk ");
  102.        Cconout(data[0]);
  103.        Cconws(":\15\12\15\12");
  104.  
  105.        i = 1;
  106.        flag = 0;
  107.        while (!flag)
  108.         {
  109.              while (!isname(i))
  110.               {
  111.                    ++i;
  112.                    if (i >= length)
  113.                     {
  114.                       flag = 1;
  115.                       break;
  116.                     }
  117.               }
  118.              if (!flag)
  119.               {
  120.                 p = i;
  121.                 while (isname(i))
  122.                        ++i;
  123.                 data[i] = 0;
  124.                 copy(&data[p]);
  125.               }
  126.         }
  127.        if (errflag)
  128.           Cnecin();
  129. }
  130.       
  131.